#ifndef AREA_H
#define AREA_H

#include "ModelFactory.h"
#include "Light.h"

class Graphics;
class Area {

	public:

		Area(Config*, ModelFactory*, string, Graphics*);
		string Name;
		int ID;
		void ExportToFile(string); //write this area's model data to a file with filename PARAM1

		//Creating new models
        void InitializeArea();
        Model* ReadModel(ifstream*);
		Primitive* ReadPrimitive(ifstream*);
        Primitive* CreatePrimitive(Primitive*, ifstream*);
        Primitive* TexturePrimitive(Primitive*, ifstream*);
		Primitive* ReadCube(ifstream*);
		Primitive* ReadPlane(ifstream*);
		Primitive* ReadCylinder(ifstream*);
		Primitive* ReadDisk(ifstream*);
		Primitive* ReadSphere(ifstream*);
		Primitive* ReadTorus(ifstream*);

		//Models
		vector<Model*> Models;
		Model* GetModelByID(int);
		boolean AddModel(Model*); //checks duplicate ID
		boolean RemoveModel(int);
		boolean ExistsModel(int);
		int GetNrOfPrimitives();
		Primitive* GetPrimitiveByID(int);
        Primitive* GetPrimitive(int);
		boolean RemovePrimitive(int);

		//Lights
		vector<Light*> Lights;
		Light* GetLight(int);
		boolean RemoveLight(int);

		//Shape geometry
		int GetNrOfIndices();
		vector<Primitive::VERTEX>* GetVertices();
		int GetNrOfVertices();

		//Texture and material information
		vector<string>* GetMaterialNames();

		//Variables-------------------------------------------------------------

		Config* config;
        ModelFactory* modelFactory;
        Graphics* graphics;
		
		

	private:



};

#endif